package com.example.leetcode.solution;

/**
 * 7. 整数反转
 * 给出一个 32 位的有符号整数，你需要将这个整数中每位上的数字进行反转。
 *
 * 示例 1:
 *
 * 输入: 123
 * 输出: 321
 *  示例 2:
 *
 * 输入: -123
 * 输出: -321
 * 示例 3:
 *
 * 输入: 120
 * 输出: 21
 *
 */
public class Solution7 {
    public int reverse(int x) {
        if(Math.abs(x) < 0 ){
            return 0;
        }
        String str = String.valueOf(Math.abs(x));
        Long result = 0L;
        int yinzi = 1;
        if (x < 0) {
            yinzi = -1;
        }
        for (int i = str.length() - 1; i > -1; i--) {
            int n = Integer.valueOf(String.valueOf(str.charAt(i)));
            Long i1 = getNumber(i, n);
            if (i1 == -1) {
                return 0;
            }
            result += i1 * yinzi;
        }
        if (result > Integer.MAX_VALUE || result.intValue() != result) {
            return 0;
        }
        return result.intValue();
    }

    public Long getNumber(int length, int n) {
        StringBuffer str = new StringBuffer("1");
        for (int i = 0; i < length; i++) {
            str.append("0");
        }
        return Long.valueOf(str.toString()) * n;
    }
}
